Skip to content

test(smoke): boot a scaffolded board at the depth Vercel deploys it - #246

Merged
jouwdan merged 1 commit into
mainfrom
claude/mei-132-at-root-boot-smoke
Aug 26, 2026
Merged

test(smoke): boot a scaffolded board at the depth Vercel deploys it#246
jouwdan merged 1 commit into
mainfrom
claude/mei-132-at-root-boot-smoke

Conversation

@jouwdan

@jouwdan jouwdan commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Every board bug found this week shipped through forum-web build --at-root, and no CI job ever built or booted a board that way.

  • MEI-130 — the theme catalog was never registered, so boards rendered default.latestThreads.heading
  • MEI-131 — the Tailwind scan roots resolved to nothing, so boards shipped 17KB of preflight and no component rules
  • MEI-133 — /install could not finish

All three were found by a person looking at a deployed page. The checks added for the first two run at .meith/app only, and rebaseGlobalsCssSources computes a different path at each depth — ../../node_modules/@meith at depth zero versus ../../../../node_modules/@meith at depth two — so depth two was never evidence about depth zero.

What changed

The boot and its assertions are one helper now, run against two boards:

.meith/app the way a self-hoster gets it — unchanged
project root, --at-root the way Vercel deploys it — new

Both are held to the same three things: it renders <main>, no message key reaches the page as text, and the stylesheet carries rules for classes only @meith/ui and @meith/theme-default produce.

Why a second board rather than rebuilding the first

Rebuilding would save the pack and one npm install. It would also test two materialization depths coexisting in one workspace, which no real board does — so a failure there would be the smoke failing something no user can reach. Given how much of this week went on gates that were wrong rather than missing, the extra minute is worth it.

What a green run does not prove

Both written into docs/development.md rather than left to be assumed later:

  • The at-root board boots through the standalone server, because output: 'standalone' is skipped only when VERCEL is set and CI is not Vercel. Vercel packages its own functions. This proves materialization, Tailwind and the catalog at depth zero — not Vercel's serving shape.
  • It is a fresh board, so nothing here says the two depths can coexist.

Verification

Run locally end to end, both boards green:

== the board materialized at .meith/app rendered / ==
== every class the board rendered has a rule ==
== a second board, materialized the way Vercel deploys it ==
== forum-web start at the project root ==
== the board materialized at the project root rendered / ==
== every class the board rendered has a rule ==
✓ board-workspace-smoke: a scaffolded, externally-installed board builds and boots

This box has no Docker, so Postgres was PGlite over the wire protocol. The first attempt failed with unnamed prepared statement does not exist on the existing depth-two boot — that was the substitute database accepting 30 connections; the e2e harness serves the board with maxConnections: 1 for the same reason. Nothing in the product: packages/db/src/client.ts already sets prepare: false on every connection. CI uses a real postgres:18-alpine and needs none of this.

docs:links:check passes. The CI job comment and step name were updated to say it now boots at both depths.

Fixes MEI-132.


Generated by Claude Code

Every board bug found so far shipped through `forum-web build --at-root`
— the unregistered theme catalog, the Tailwind scan roots resolving to
nothing, the installer that could not finish — and no CI job ever built or
booted a board that way. The checks added for those bugs ran at
`.meith/app` only, and `rebaseGlobalsCssSources` computes a different path
at each depth rather than the same one twice, so depth two was never
evidence about depth zero.

The boot and its assertions are one helper now, run against two boards: the
first at `.meith/app`, the way a self-hoster gets it, and a second
scaffolded from the same packed tarballs and built with `--at-root`, the
way Vercel deploys it. Both are held to the same three things — it renders
`<main>`, no message key reaches the page as text, and the stylesheet
carries rules for classes only the installed packages produce.

The second board is scaffolded fresh rather than the first one rebuilt.
Rebuilding would save the pack and one install, but it would test two
materialization depths coexisting in one workspace, which no real board
does — a failure there would be the smoke failing something no user can
reach.

Two things a green run does not prove are written down in
docs/development.md rather than left to be assumed: the at-root board
boots through the standalone server, because `output: 'standalone'` is
skipped only when VERCEL is set and CI is not Vercel, and nothing here
says the two depths can coexist.
@jouwdan
jouwdan merged commit 7766057 into main Aug 26, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants